package com.itheima.springbootwebtlias.controller;

import com.itheima.springbootwebtlias.pojo.Dept;
import com.itheima.springbootwebtlias.pojo.Result;
import com.itheima.springbootwebtlias.service.DeptService;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Select;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 部门处理类，处理部门相关请求
 */
@Slf4j
@RequestMapping("/depts")
@RestController
public class DeptController {
    //创建日志对象
//    private static final Logger log = LoggerFactory.getLogger(DeptController.class);


    @Autowired
    private DeptService deptService;


    //查询所有部门列表的处理方法
    @GetMapping
    public Result queryAllDept(){


        //1.接收参数
        log.info("查询全部部门，请求参数：");

        //2.调用业务层Service
        List<Dept> depts2 = deptService.selectAll();

        log.info("查询全部部门，查询结果：" + depts2);
        //3.返回

        return Result.success(depts2);
    }


    @DeleteMapping
    public Result deleteByIdDept(Integer id){
        //1.接受参数

        log.info("根据id删除部门，请求参数：" + id);
        //2.调用业务层方法
        deptService.removeById(id);

        //3。封装返回Result对象
        return Result.success();

    }



    //添加部门处理器方法
    @PostMapping
    public Result addDept(@RequestBody Dept dept){

        //1.接受数据
        log.info("添加部门，请求参数" + dept);
        //2.调用业务层方法
        deptService.addDept(dept);

        //3.封装返回
        return Result.success();
    }


    //根据id查询部门
    @GetMapping("/{id}")
    public Result queryByIdDept(@PathVariable Integer id){
        //1.接受数据
        log.info("根据id查询部门，请求参数：" + id);

        //2.调用service方法
        Dept dept = deptService.selectById(id);
        log.info("根据id查询部门，接收结果：" + dept);
        //3.返回结果
        return Result.success(dept);
    }


    //根句id更新部门
    @PutMapping
    public Result updateByIdDept(@RequestBody Dept dept){
        //1.接受参数：json
        log.info("根据id更新部门，请求参数：" + dept);

        //2.调用业务层
        deptService.updateById(dept);
        //3.返回结果
        return Result.success();
    }
}

